\section{Distributed Applications in Manufacturing Envirements}

Die moderne Fertigungstechnik stellt nahezu alle Alltäglichen Gegenstände her wie zB: Autos, Bleistifte, Zahnbürsten oder Essen.
Die Verfahren dazu unterscheiden sich zum Teil sehr, wie Bier brauen und ein
Auto herstellen. Softwarearchitektur in der modernen Fertigungstechnik unterliegt
generell den gleichen Trends wie sonstige Softwareentwicklung.
Aber oft mit speziellen Modifikationen. Es werden atypische Paradigmen
eingesetzt um verschiedenste Anforderungen zu erfüllen wie Echtzeit, Sicherheit
oder Deterministik.

\subsection{The Automation Pyramid}

Die Automatisierungspyramide besteht aus drei Bereichen von oben herunter: Information, Execution
und Control. Der größte Anteil der Geräte ist in der Control Ebene zu finden. Diese Ebene kümmert
sich um die Maschinerie und deren Einzelne Schritte. Die Exection Ebene steuert den gesamten Maschinenpark.
Die Informationsebene ist für den Fertigungsprozess als Ganzes zuständig und steuert die dazu notwendigen
Aktivitäten. Kommandos werden von oben durch die Pyramide nach unten geleitet und Reportdaten umgekehrt.
Der Artikel beleuchtet den untersten Teil der Pyramide wo gut bekannte Patterns nicht mehr greifen.

\subsection{Highly Distributed, Highly Diverse}

Die Fertigung eines Teiles benötigt viele verschiedene Schritte und damit auch Geräte.
Um einen großen Output zu erzeugen arbeiten Maschinen oft parallel. Dazu müssen viele
Sensoren, Controller und Workstations zusammenarbeiten. Die Software in solchen Systemen 
hat eine sehr lange Laufzeit, Updates werden nie oder nur wenn unausweichlich durchgeführt.
Trotz dieser Vielfalt an Systemen muss gewährleistet werden, dass ein reibungsloser Ablauf stattfindet.
Um dies zu erreichen werden immer mehr Industriestandards eingesetzt.

\subsection{Tough Requirements}

Moderne Fertigungsumgebungen haben harte Anforderungen an Echtzeit. Oft sind Zeitauflösungen kleiner 50$\mu$s
gefordert. Diese Anforderungen werden erfüllt durch Programmable Logical Controllers (Signalverarbeitung),
 Numerical Controllers (Maschinenachssteuerung) und Drive Controllers (Motorsteuerung). PC in dieser Umgebung müssen
 innerhalb von Millisekunden reagieren. Ebenso gibt es keinen zweiten Versuch oder etwas wie eine Rollback Funktion.
 
 \subsection{Real-World Parallelism}
 
 Fabriken werden selten gebaut um synchron an einem Teil zu fertigen. Normalerweise wird versucht so viele
 Kopien eines Produktes wie möglich gleichzeitig zu fertigen. Dazu steuert ein System einen Task synchron, die 
 Parallelisierung wird durch Kommunikation zwischen den Systemen erreicht.
 
 
\subsection{Security + Safety + Determinism = Dependability}

Die Sicherheit wird bei Fertigungsanlagen großgeschrieben. So könnten Computerviren gravierende Probleme verursachen,
wobei das schlimmste nicht der Datendiebstahl wäre (vgl Chemieindustrie oder Atomindustrie). Die Firma selbst und der 
Kunde des Produkts ist auf die Sicherheit und Korrektheit der Produktion angewiesen. Die folgenden Punkte sind dabei die wichtigsten
Aspekte: Security (Fertigungssysteme sind nicht mit der AUßenwelt verbunden), Safety (Applikationen müssen fehlersicher sein; bei Fehlern muss es 
Redundanzen geben) und Determinism (Das System muss deterministisch sein und darf keine ungewollten Zustände einnehmen).

 \subsection{Architectural Paradigms}
 
 In der Fertigung wird nicht  mit virtuellen sondern realen Objekten gearbeitet. Transactional oder Load-Balancing Patterns können hier
 keine Verwendung finden, denn es gibt keine Möglichkeit auf Rollbacks. Diese Tatsache erfordert ein traditionelleres Mechanismusmodell, das Cyclic execution model.
 Dabei wird immer der gleiche Ablauf von abgearbeitet. Sequenzen eines Ablaufs können unterschiedliche Zeit benötigen, der
 Ablauf selbst aber findet innerhalb einer definierten Zeit statt. Es wird dadurch eine Reduktion der Komplexität erreicht. 
 Das Cyclic Model arbeitet mit Zuständen die von Variablen abhängen. Damit hängt die maximale Anzahl an Zuständen direkt am
 Produkt aller Variablen Zustände. Die minimale Last ist der Cycle selbst, die maximale Last bedeutet eine 100\%ige Auslastung des
 Prozessors. Die Nachteile dabei liegen auf der Hand: Die CPU wird immer ausgelastet unabhängig von der tatsächlichen Arbeitslast und ein 
 Cycle bestimmt die Maximaldauer eines Tasks. Zusätzlich werden kritische Dinge mittels eines Event-Driven Demon abgehandelt. In Fachkreisen auch
 Interrupt genannt. Diese Systemarchitektur funktioniert zwar, ist aber nicht schön da sie mit sich einen großen Testaufwand mit sich bringt.
 Hier gibt es viel Hoffnung für SOA  in Verbindung mit Event-Driven Systemen 
 
 \subsection{The Future of Manufacturing Applications}
 
 Die Architekturtrends bei Fertigungssoftware gehen in die Richtung, dass Standard Betriebssysteme eingesetzt werden wo es möglich ist
 und je konfigurierbarer eine Software ist desto besser. Gefördert wird dieser Effekt weiter durch Virtualisierung. Ebenso 
 verhält es sich mit den Kommunikationsprotokollen. Es werden wenn möglich aktuelle Techniken verwendet. Eine direkte Verbindung
 zum Internet wird nicht hergestellt, trotzdem werden die Techniken davon intern verwendet (Intranet). Die steigende
 Rechnerleistung ermöglicht es in beide Wege weiter zugehen, sei es zyklische Abarbeitung der Aufgaben oder eine Event getriebene Architektur.
 
 \subsection{Cloud Computing and Manufacturing}
 
 Vergleicht man verschiedene Anbieter und deren Angebote wirkt die Cloud als perfekte Lösung für Fertigungen. Sie bietet
 Rechenleistung und quasi unendlichen Speicherplatz. Für Produktionen die jede Menge an Datensätzen erzeugen, da jeder Schritt
 dokumentiert wird eignet sich dies hervorragend. Doch genau die Cloud ist das Problem. Fertigungen sind hochsensibel, ein Ausfall
 erzeugt unter Umständen Millionenschäden. Aber auch in diesem Fall werden die Fertigungen aus dem Cloudprinzip lernen und ihre Vorteile
 daraus ziehen.
  
 \subsection{Fazit}
 
Ein guter Artikel, der die Kernpunkte von Produktionen gut beleuchtet. In Fertigungen
werden alle Techniken, die sich bisher bewährt haben, sei es außerhalb oder innerhalb
von Fertigungen eingesetzt. Cloud Computing oder ähnliche Ansätze werden mit der Zeit
ihren Weg in die Fertigungen finden. Eine Auslagerung ins Internet kann ich mir jedoch nur 
schwer vorstellen. Schon heute haben Zulieferer der Automobilindustrie mit schweren
Konventionsstrafen zu rechnen wenn ein Band aus ihrem Verschulden steht. Stellt
man sich vor, dass der Anbieter eines Cloudservices einen Ausfall verursacht würde die
gesamte Produktion ins Stocken geraten. Allein dieser Grund, zusätzlich zu den im Artikel
genannten Sicherheitsbedenken, wird große Produktionen davon abhalten in dieser Form Gebrauch
von Cloud Services bzw verteilten Systemen zu machen. 
 